package SPA;

import Util.GlobalMessages;

/**
 * Abstract DFA State Transition
 */
public abstract class Transition 
{
	private DFAState nextState;
	private String semanticActionName;
	
	/**
	 * Constructor
	 * @param nextState	next state of the transition
	 */
	public Transition (DFAState nextState, String semanticActionName)
	{
		this.setNextState(nextState);
		this.setSemanticActionName(semanticActionName);
	}

	/**
	 * @param nextState the nextState to set
	 */
	public void setNextState(DFAState nextState) 
	{
		this.nextState = nextState;
	}

	/**
	 * @return the nextState
	 */
	public DFAState getNextState() 
	{
		GlobalMessages.semanticActionName = this.semanticActionName;
		return nextState;
	}
	
	/**
	 * 
	 * @param semanticActionName
	 */
	public void setSemanticActionName(String semanticActionName)
	{
		this.semanticActionName = semanticActionName;
	}
	
	/**
	 * 
	 * @return the Semantic Action Name
	 */
	public String getSemanticActionName()
	{
		return this.semanticActionName;
	}
	
	public abstract String toString();
}
